# 利用turtle模块画一棵树，包括枝干和树叶，并涂上颜色
import turtle
import random


# 画树
def draw_tree():
    turtle.screensize(200, 400, "#f8daf0")
    turtle.ht()
    turtle.Turtle().screen.delay(0)  # 取消延迟，有奇效
    p = turtle.Pen()
    p.penup()
    p.goto(80, -200)
    p.pendown()
    p.speed(0)  # 笔尖速度调至最大
    p.color('Goldenrod4')  # 树干颜色
    p.seth(90)  # 调整初始角度
    pos = [[], [], [], [], [], [], [], [], [], []]  # 记录枝干节点位置
    pos[0].append(p.pos())  # 将枝干节点位置存储到列表中
    for i in range(6):  # 枝干层数
        for pos_ in pos[i]:
            for j in range(round((3 / 2) ** i)):  # 每个枝干节点的枝干数
                p.penup()  # 提笔并在枝干节点之间移动
                p.goto(pos_)
                p.pendown()
                p.width(25 * (4 / 7) ** i)  # 枝干宽度
                p.forward(90 * (11 / 12) ** i)  # 枝干长度
                pos[i + 1].append(p.pos())  # 在列表中添加枝干接点
                a = random.randint(-75, 75)  # 设置枝干方向
                p.seth(a + 90)
    # p.color('green')  # 叶子颜色
    # p.seth(90)
    # for i in range(4, 7):
    #     for pos_ in pos[i]:
    #         for j in range(10):  # 每个枝干节点处的叶子数
    #             p.penup()
    #             p.goto(pos_)
    #             p.pendown()
    #             p.speed(0)
    #             p.width(20 * (4 / 5) ** i)  # 叶片宽度
    #             p.forward(40)  # 叶片长度
    #             a = random.randint(-90, 90)  # 叶片方向
    #             p.seth(a + 90)


def draw_heart(x, y):
    turtle.color('red', 'pink')  # 画笔颜色
    turtle.pensize(3)  # 画笔粗细
    turtle.speed(0)  # 描绘速度

    # 初始化画笔起始坐标
    turtle.up()  # 提笔
    turtle.goto(x, y)  # 移动画笔到指定起始坐标（窗口中心为0,0）
    turtle.down()  # 下笔
    turtle.setheading(0)  # 先重置角度
    turtle.left(140)  # 向左旋转140度
    turtle.begin_fill()  # 标记背景填充位置

    # 画心形直线（ 左下方 ）
    turtle.forward(55)  # 向前移动画笔，长度为224
    # 画爱心圆弧
    for i in range(200):
        turtle.right(1)
        turtle.forward(0.5)
    turtle.left(120)  # 调整画笔角度
    for i in range(200):
        turtle.right(1)
        turtle.forward(0.5)
    # 画心形直线（ 右下方 ）
    turtle.forward(55)
    turtle.end_fill()  # 标记背景填充结束位置


if __name__ == "__main__":
    draw_tree()
    draw_heart(-50, 60)  # 自行调整爱心绘制的位置
    draw_heart(100, 70)  # 自行调整爱心绘制的位置
    turtle.mainloop()
